const ExcelMod = require('zl-excel');
const Service = require('egg').Service;

class ToolsService extends Service {


  /**
	 * 文件导出
	* @param headers 表头,二维数组
	* @param list 表格数据,二维数组
  * @example
	* headers = [[{title: '姓名',key: 'name',},]]
	* list = [[{name: '张三'}]]
	*/
  async exportExcel(headers, list) {
    const { ctx } = this;
    // 表格数据信息
    const excelInfo = [];
    headers.forEach((item, index) => {
      excelInfo.push({
        sheetName: `Sheet_${index + 1}`, // 第一个sheet的名字
        columns: item,
        rows: list[index],
      });
    });
    // 将表格返回到调用处
    const workbook = await ExcelMod.getWorkbook({
      excelData: excelInfo,
    });

    // 设置表格信息请求头，然后进行导出到前端
    const fileName = encodeURIComponent('测试表格.xlsx');
    ctx.set('content-disposition', `attachment; filename* = UTF-8''${fileName}`);
    ctx.status = 200;
    await workbook.xlsx.write(ctx.res);
    ctx.res.end();
  }
}

module.exports = ToolsService;
